home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2000 May
/
Chip_2000-05_cd1.bin
/
sharewar
/
FFE
/
ANIM.SWG
/
0007_FLT TWE OPT.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-09-03
|
19KB
|
407 lines
--------a-FLT-------------------------------
The FLC files are files created by the Autodesk Animator Pro and contain
animations. The FLC files are a superset of those created by the
Autodesk Animator (FLIc files). In some cases, new data fields or
compression methods were added. The FLC files use a hierarchical block
oriented structure and blocks are a combination of control information
and data. The file consists of one header followed by data blocks. It is
possible that new types of blocks not described in this document will be
added to animation files in the future. It is recommended that you
quietly ignore unknown block types you encounter during animation
playback. The size fields in the block headers make it easy to skip an
entire unrecognized block.
The FLC files consist of one 128-byte header block and one or more of
the following blocks :
The prefix block, if present, contains Animator Pro settings
information, CEL placement information, and other auxiliary data.
A frame block exists for each frame in the animation. In addition, a
ring frame follows all the animation frames. Each frame block contains
color palette information and/or pixel data.
The ring frame contains delta-compressed information to loop from the
last frame of the flic back to the first. It can be helpful to think of
the ring frame as a copy of the first frame, compressed in a different
way. All flic files will contain a ring frame, including a single-frame
flic.
The FLC file header
OFFSET Count TYPE Description
0000h 1 dword The size of the whole animation file,
including the size of this header.
0004h 1 word ID=0AF12h
0006h 1 word Number of frames in this animation, not
including the ring frame. FLC files have
a maximum length of 4000 frames.
0008h 1 word Screen width in pixels
000Ah 1 word Screen height in pixels
000Ch 1 word Bits per pixel (always 8)
000Eh 1 word Flags - bitmapped
0 - Ring frame not written / ring frame
written
1 - Flic header not updated / updated
2-15 - reserved
0010h 1 dword Delay between frames in miliseconds.
0014h 1 word reserved
0016h 1 dword MS-DOS date and time of file creation
001Ah 1 dword Serial number of the Animator Pro program
used to create the file. If the file was
created with the FlicLib development kit,
this value equals 0464c4942h ("FLIB").
001Eh 1 dword MS-DOS date and time of last modification
0022h 1 dword Serial number of program that made the last
modification. See Serial Number.
0026h 1 word X-axis aspect ratio of the file
0028h 1 word Y-axis aspect ratio of the file
(320x200 = 6:5)
002Ah 38 byte reserved (0)
0050h 1 dword Offset from begin of file to the first
animation frame block.
0054h 1 dword Offset from begin of file to the second
animation frame block. This value is used
when looping the animation.
0058h 40 byte reserved (0)
Each subblock in the animation file has an identical header structure,
which is formatted like this :
0000h 1 dword The size of the whole block and all subordinate
blocks including the size of this header
0004h 1 word Block ID, varies depending on the block type.
0006h 1 word Number of subordinate blocks in this block.
including the ring frame. FLC files have a
maximum length of 4000 frames.
0008h 8 byte reserved(0)
Immediately after the header there may be an optional prefix block,
which is used to store additional data which is not directly involved in
animation playback.
The prefix block has the usual header with an ID of 0F100h. The prefix
block should only be created by the Animator Pro programs and never by
any other software, it is to be ignored by other software.
The FLC frame blocks contain the information to convert the current
frame into the next frame; they have an ID of 0F1FAh. Directly after the
frame header, there are the subordinate data blocks - if the subblock
count is 0 this means, that the current frame is identical to the
previous frame, only the appropriate delay has to be made. The data
blocks have a different header format :
OFFSET Count TYPE Description
0000h 1 dword Size of this block, including header size
0004h 1 word Data type identifier :
4 - 256-level color palette info
7 - Word-oriented delta compression
11 - 64-level color palette info
12 - Byte-oriented delta compression
13 - Entire frame is color index 0
15 - Byte run length compression
16 - No compression
18 - Postage stamp sized image
0006h ? byte Color or pixel data
The following sections describe each of these data encoding methods in
detail.
--- Block Type 4 (FLI_COLOR256) - 256-Level Color
The data in this block is organized in packets. The first word following
the block header is a count of the number of packets in the blocks. Each
packet consists of a one-byte color index skip count, a one-byte color
count and three bytes of color information for each color defined.
At the start of the block, the color index is assumed to be zero. Before
processing any colors in a packet, the color index skip count is added
to the current color index. The number of colors defined in the packet
is retrieved. A zero in this byte indicates 256 colors follow. The three
bytes for each color define the red, green, and blue components of the
color in that order. Each component can range from 0 (off) to 255 (full
on). The data to change colors 2,7,8, and 9 would appear as follows:
2 ; two packets
2,1,r,g,b ; skip 2, change 1
4,3,r,g,b,r,g,b,r,g,b ; skip 4, change 3
--- Block Type 11 (FLI_COLOR) - 64-Level Color
This block is identical to FLI_COLOR256 except that the values for the
red, green and blue components are in the range of 0-63 instead of
0-255, i.e. in native VGA values which can be written to the VGA without
modification.
--- Block Type 13 (FLI_BLACK) - No Data
This block has no data following the header. All pixels in the frame are
set to color index 0.
--- Block Type 16 (FLI_COPY) - No Compression
This block contains an uncompressed raw image of the frame, from upper
left to the lower right, storing each line sequentially. This type of
block is created when the preferred compression method (SS2 or BRUN)
generates more data than the uncompressed frame image; a relatively rare
situation.
--- Block Type 15 (FLI_BRUN) - Byte Run Length Compression
This block contains the entire image in a compressed format. Usually
this block is used in the first frame of an animation, or within a
postage stamp image block.
The data is organized in lines. Each line contains packets of compressed
pixels. The first line is at the top of the animation, followed by
subsequent lines moving downward. The number of lines in this block is
given by the height of the animation.
The first byte of each line is a count of packets in the line. This
value is ignored, it is a holdover from the original Animator. It is
possible to generate more than 255 packets on a line. The width of the
animation is now used to drive the decoding of packets on a line;
continue reading and processing packets until width pixels have been
processed, then proceed to the next line.
Each packet consist of a type/size byte, followed by one or more pixels.
If the number is negative (the high bit of the packet type is set), the
absolute value is the count of pixels to be copied from the packet to
the animation image, otherwise the next byte contains a single pixel
which is to be replicated; The lower 7 bits are the number of times the
pixel is to be replicated.
--- Block Type 12 (FLI_LC) - Byte Aligned Delta Compression
This block contains the differences between the previous frame and this
frame. This compression method was used by the original Animator, but is
not created by Animator Pro. This type of block can appear in an
Animator Pro file, however, if the file was originally created by
Animator, then some (but not all) frames were modified using Animator
Pro.
The first word following the block header contains the position of the
first line in the block. This is a count of lines (down from the top of
the image) which are unchanged from the prior frame. The second word
contains the number of lines in the block. The data for the lines
follows these two words.
Each line begins with two bytes. The first byte contains the starting x
position of the data on the line, and the second byte the number of
packets for the line. Unlike BRUN compression, the packet count is
significant (because this compression method is only used on 320x200
flics).
Each packet consists of a single byte column skip, followed by a packet
type/ size byte, which has the reverse meaning of in the block type 15.
--- Block Type 7 (FLI_SS2) - Word Aligned Delta Compression
This format contains the differences between consecutive frames. This is
the format most often used by Animator Pro for frames other than the
first frame of an animation. It is similar to the line coded delta (LC)
compression, but is word oriented instead of byte oriented. The data is
organized into lines and each line is organized into packets.
The first word in the data following the block header contains the
number of lines in the block. Each line can begin with some optional
words that are used to skip lines and set the last byte in the line for
animations with odd widths. These optional words are followed by a count
of the packets in the line. The line count does not include skipped
lines.
The high order two bits of the word is used to determine the contents of
the word :
Bit 15 Bit 14 Meaning
0 0 The word contains the packet count. The packets
follow this word. The packet count can be zero;
this occurs when only the last pixel on a line
changes.
1 0 The low order byte is to be stored in the last byte
of the current line. The packet count always follows
this word.
1 1 The word contains a line skip count. The number of
lines skipped is given by the absolute value of the
word. This word can be followed by more skip counts,
by a last byte word, or by the packet count.
The packets in each line are similar to the packets for the line coded
block. The first byte of each packet is a column skip count. The second
byte is a packet type. If the packet type is positive, the packet type
is a count of words to be copied from the packet to the animation image.
If the packet type is negative, the packet contains one more word which
is to be replicated. The absolute value of the packet type gives the
number of times the word is to be replicated. The high and low order
byte in the replicated word do not necessarily have the same value.
--- Block Type 18 (FLI_PSTAMP) - Postage Stamp Image
This block type holds a postage stamp - a reduced-size image - of the
frame. It generally appears only in the first frame block within a flic
file. When creating a postage stamp, Animator Pro considers the ideal
size to be 100x63 pixels. The actual size will vary as needed to
maintain the same aspect ratio as the original. The pixels in a postage
stamp image are mapped into a six-cube color space, regardless of the
color palette settings for the full frame image. A six-cube color space
is formed as follows:
start at palette entry 0
for red = 0 thru 5
for green = 0 thru 5
for blue = 0 thru 5
palette_red = (red * 256)/6
palette_green = (green * 256)/6
palette_blue = (blue * 256)/6
move to next palette entry
end for blue
end for green
end for red
Any arbitrary rgb value (where each component is in the range of 0-255)
can be mapped into the six-cube space using the formula:
((6*red)/256)*36 + ((6*green)/256)*6 + ((6*blue)/256)
The full postage stamp block header is defined as follows:
Offset Length Name Description
OFFSET Count TYPE Description
0000h 1 dword Size of this block, including header size
0004h 1 word ID=18
0006h 1 word Height of the postage stamp image
0008h 1 word Width of the image
000Ah 1 word Color translation type :
1 - six-cube color space
Immediately following this header is the postage stamp data. The data is
formatted as a block with standard size/type header. The type will be
one of:
15 FPS_BRUN Byte run length compression
16 FPS_COPY No compression
18 FPS_XLAT256 Six-cube color xlate table
The FPS_BRUN and FPS_COPY types are identical to the FLI_BRUN and
FLI_COPY encoding methods described above.
The FPS_XLAT256 type indicates that the block contains a 256-byte color
translation table instead of pixel data. To process this type of postage
stamp, read the pixel data for the full-sized frame image, and translate
its pixels into six-cube space using a lookup in the 256-byte color
translation table. This type of postage stamp appears when the size of
the animation frames is smaller than the standard 100x63 postage stamp
size.
*************
TWE - Tween Data Files
A TWE file holds information about a tweening operation set up via the
Tween menus. The information includes the starting and ending shapes,
and the optional userD specified links between the shapes. Animator Pro
creates tween files.
A TWE file begins with an 8-byte header defined as follows:
Offset Length Name Description
0 2 magic File format identifier. Always hex 1995.
2 2 version The file format version; always zero.
4 4 tcount The number of tween shapes in the file;
always 2.
8 8 reserved Unused space; set to zeroes.
16 4 linkcount The number of link entries in the file.
Immediately following the file header are the link entries. If the
linkcount value is zero there are no links. Each link entry is a pair of
32-bit integers. The first value in each pair is the index of the point
in the first shape, and the second value is the index of the point in
the ending shape. (IE, a link value of 2,7 says to link the second
starting-shape point to the seventh ending-shape point.)
Following the link entries is the data block that describes the starting
shape, then the data block that describes the ending shape. The format
of these blocks is identical to that of the polygon (PLY) file,
including file header data. In other words, they appear as if a pair of
polygon files are embedded in the tween file at this point.
**********
OPT - Optics Menu Settings Files
An OPT file holds information about an optics operation set up via the
Optics menus. Both Animator Pro and the original Animator create OPT
files. The file format is the same for both.
An OPT file starts with a 4-byte header, as follows:
Offset Length Name Description
0 2 magic File type identifier. Always hex 1A3F.
2 2 count Number of records in the file.
Following the file header are optics records of 50 bytes each. A record
is generated for each click on CONTINUE MOVE in the OPTICS menu. The
move records are formatted as follows:
Offset Length Name Description
0 4 link In the file, this field is always zero.
In memory, it's a pointer to the next
move record.
4 6 spincenter The x,y,z coordinates of the spin
center point; three 16-bit values.
10 6 spinaxis The x,y,z coordinates of the spin axis;
three 16-bit values.
16 6 spinturns The x,y,z coordinates of the spin turns;
three 16-bit values.
22 4 spininter Intermediate turns. Two 16-bit values.
These are values for a conjugation matrix
that corresponds to spin axis.
26 6 sizecenter The x,y,z coordinates of the size
center point; three 16-bit values.
32 2 xmultiplier Determines (along with xdivisor)
how to scale along x dimension.
34 2 xdivisor Determines (along with xmultiplier) how
to scale along x dimension.
36 2 ymultiplier Determines (along with ydivisor)
how to scale along y dimension.
38 2 ydivisor Determines (along with ymultiplier) how
to scale along y dimension.
40 2 bothmult Like xmultiplier, but applied to both
dimensions.
42 2 bothdiv Like xdivisor, but applied to both
dimensions.
44 6 linearmove The x,y,z offset for a linear move;
three 16-bit values.
EXTENSION:FLT
OCCURENCES:PC
PROGRAMS:Autodesk Animator Pro
REFERENCE:
SEE ALSO:FLIc,FLC,CEL,COL
VALIDATION: